package com.laolang.pluto.module.generator.logic;

import com.laolang.pluto.common.core.domain.common.Page;
import com.laolang.pluto.common.logic.BaseLogic;
import com.laolang.pluto.module.generator.pojo.dto.GenTableUpdateBaseInfoDto;
import com.laolang.pluto.module.generator.pojo.dto.GenTableUpdateColumnInfoDto;
import com.laolang.pluto.module.generator.pojo.dto.GenTableUpdateGenInfoDto;
import com.laolang.pluto.module.generator.pojo.dto.TableInfoDto;
import com.laolang.pluto.module.generator.pojo.dto.TableListDto;
import com.laolang.pluto.module.generator.pojo.po.TableInfoPo;
import com.laolang.pluto.module.generator.pojo.vo.GenTableDetailVo;
import com.laolang.pluto.module.generator.pojo.vo.GenTableVo;

/**
 * @author laolang
 * @date 2021-08-01 16:35
 */
public interface GenLogic extends BaseLogic {
    /**
     * 查询代码生成列表
     */
    Page<GenTableVo> tableList(TableListDto dto);

    /**
     * 查询数据库中表的信息
     */
    Page<TableInfoPo> tableInfoList(TableInfoDto dto);

    /**
     * 根据表名添加一条记录到代码生成列表中
     *
     * @param tableName 表名
     */
    Boolean addGenTable(String tableName);

    /**
     * 删除一项代码生成列表记录
     */
    Boolean removeGenTable(Long id);

    /**
     * 查询代码生成详细信息
     */
    GenTableDetailVo genTableDetail(Long id);

    /**
     * 更新代码生成基本信息
     */
    Boolean updateGenTableBaseInfo(GenTableUpdateBaseInfoDto dto);

    /**
     * 更新代码生成列信息
     */
    Boolean updateGenTableColumn(GenTableUpdateColumnInfoDto dto);

    /**
     * 更新代码生成生成信息
     */
    Boolean updateGenTableGenInfo(GenTableUpdateGenInfoDto dto);

    /**
     * 生成代码
     */
    Boolean genCode(Long id);
}
